/**
 * Interfície que mostra els mètodes del servidor
 * @version 1.0; 16-04-2012; java version "1.6.0";
 * @author Jesus Hernàndez y Juan Luis Chávez
 */
package common;

import beans.Estudiant;
import beans.ParticipacioEnquesta;
import beans.PreguntaEnquesta;
import beans.TotalsPregunta;
import java.rmi.RemoteException;
import java.util.List;

public interface RemotInterface extends java.rmi.Remote {

    /**
     * Retorna un estudiant a partir del seu login
     * @param loginEstudiant identificador de l'estudiant a consultar
     * @return Estudiant
     * @exception RemoteException
     * @exception EOlympicsException
     */    
    Estudiant getEstudiant(String loginEstudiant) throws RemoteException, 
            EOlympicsException;
    
    /**
     * Retorna el nom de una Universitat
     * @param idUni identificador de Universitat a consultar
     * @return Nom/Texte de la Universitat
     * @exception RemoteException
     * @exception EOlympicsException
     */    
    String getNomUniversitat(int idUni) throws RemoteException, 
            EOlympicsException;
    
    
    /**
     * Retorna valor lògic per veure si aquest estudiant ja ha fet el
     * questionari, i per tant no se li permet fer-lo de nou
     * @param loginEstudiant identificador de l'estudiant a consultar
     * @return Si l'ha fet o no el questionari
     * @exception RemoteException
     * @exception EOlympicsException
     */
    boolean haFetElQuestionari (String loginEstudiant) throws RemoteException,
            EOlympicsException;
    
    
    /**
     * Retorna una llista de les preguntes de l'enquesta per mostrar i poder
     * contestar-les
     * @return Llista de preguntes
     * @exception RemoteException
     * @exception EOlympicsException
     */
    List<PreguntaEnquesta> getPreguntesEnquesta() throws RemoteException, 
            EOlympicsException;
    
    
    /**
     * Envia el questionari que ha omplert l'estudiant per tal de guardar-lo
     * @param respostes Llista de respostes al questionari per part del
     * estudiant
     * @return true si l'enviament s'ha fet i guardat correctament
     * @exception RemoteException
     * @exception EOlympicsException
     */    
    boolean guardarRespostesEnquesta (List<ParticipacioEnquesta> respostes)
            throws RemoteException, EOlympicsException;
    
    
    /**
     * Obté el quadre de resultats totals de l'enquesta
     * @param login Login del estudiant
     * @param filteredByUniversitat Flag per indicar si filtrem per Universitat
     * @return Llista amb el quadre de resultats
     * @exception RemoteException
     * @exception EOlympicsException
     */   
    public List<TotalsPregunta> getResultatsTotals(String login, 
            boolean filteredByUniversitat)
            throws RemoteException, EOlympicsException;       
    
}